#pragma once
#include <memory>
#include <list>
#include <string>

#ifndef UNICODE
typedef std::string String;
typedef char Char;
#else
typedef std::wstring String;
typedef wchar_t Char;
#endif

#define SETCALSS(CLASS) \
  string_ptr CLASS::class_ = make_string_ptr(#CLASS);

#define GETCALSS(CLASS)             \
  virtual string_ptr getClass()     \
  {                                 \
    return make_string_ptr(#CLASS); \
  }

#define make_String_ptr(str) std::make_shared<String>(str)
typedef std::shared_ptr<String> String_ptr;
typedef std::shared_ptr<std::list<String_ptr>> String_list_ptr;

#define make_string_ptr(str) std::make_shared<std::string>(str)
#define make_wstring_ptr(str) std::make_shared<std::wstring>(str)
#define append_string_ptr(str1, str2) make_string_ptr((str1)->append(*(str2)));
#define append_wstring_ptr(str1, str2) make_wstring_ptr((str1)->append(*(str2)));

typedef std::shared_ptr<std::string> string_ptr;
typedef std::shared_ptr<std::list<string_ptr>> string_list_ptr;
typedef std::shared_ptr<std::wstring> wstring_ptr;
typedef std::shared_ptr<std::list<wstring_ptr>> wstring_list_ptr;

typedef std::shared_ptr<std::list<long>> long_list_ptr;

#define class_ptr(PTR)                    \
  class PTR;                              \
  typedef std::shared_ptr<PTR> PTR##_ptr; \
  typedef std::shared_ptr<std::list<std::shared_ptr<PTR>>> PTR##_list_ptr;

// #define SharedObject(CLASS) std::dynamic_pointer_cast<CLASS>(GetSharedObject())

#define SHAREDOBJECT(CLASS)                                      \
  std::shared_ptr<CLASS> SharedObject_##CLASS()                  \
  {                                                              \
    std::weak_ptr<CLASS> weakPtr = std::shared_ptr<CLASS>(this); \
    std::shared_ptr<CLASS> sptr = weakPtr.lock();                \
    return sptr;                                                 \
  }

#define SharedObject(CLASS) SharedObject_##CLASS()

class_ptr(AdsOutputVisitor);
class_ptr(AdsVisitor);
class_ptr(AnalyzerIndexType);
class_ptr(Appendable);
class_ptr(AutoIncrementType);
class_ptr(BigDecimal);
class_ptr(BOOL);
class_ptr(CobarShowStatus);
class_ptr(ConditionValue);
class_ptr(ConditionValue_ConditionType);
class_ptr(CycleClause);
class_ptr(DbType);
class_ptr(DrdsBaselineStatement);
class_ptr(DrdsCancelDDLJob);
class_ptr(DrdsChangeDDLJob);
class_ptr(DrdsClearDDLJobCache);
class_ptr(DrdsInspectDDLJobCache);
class_ptr(DrdsRecoverDDLJob);
class_ptr(DrdsRemoveDDLJob);
class_ptr(DrdsRollbackDDLJob);
class_ptr(DrdsShowDDLJobs);
class_ptr(DrdsShowGlobalIndex);
class_ptr(DrdsShowMetadataLock);
class_ptr(FormatOption);
class_ptr(FullTextType);
class_ptr(SQLFunction);
class_ptr(HiveASTVisitor);
class_ptr(HiveCreateTableParser);
class_ptr(HiveCreateTableStatement);
class_ptr(HiveExprParser);
class_ptr(HiveInputOutputFormat);
class_ptr(HiveInsert);
class_ptr(HiveLexer);
class_ptr(HiveMultiInsertStatement);
class_ptr(Identity);
class_ptr(IllegalSQLObjectViolation);
class_ptr(InsertColumnsCache);
class_ptr(InsertColumnsCache_Entry);
class_ptr(Lexer);
class_ptr(Lexer_CommentHandler);
class_ptr(Lexer_SavePoint);
class_ptr(Keywords);
class_ptr(ModelClause);
class_ptr(ModelClause_CellAssignment);
class_ptr(ModelClause_CellAssignmentItem);
class_ptr(ModelClause_CellReferenceOption);
class_ptr(ModelClause_MainModelClause);
class_ptr(ModelClause_ModelColumn);
class_ptr(ModelClause_ModelColumnClause);
class_ptr(ModelClause_ModelRuleOption);
class_ptr(ModelClause_ModelRulesClause);
class_ptr(ModelClause_QueryPartitionClause);
class_ptr(ModelClause_ReferenceModelClause);
class_ptr(ModelClause_ReturnRowsClause);
class_ptr(MySqlAlterDatabaseKillJob);
class_ptr(MySqlAlterDatabaseSetOption);
class_ptr(MySqlAlterEventStatement);
class_ptr(MysqlAlterFullTextStatement);
class_ptr(MySqlAlterLogFileGroupStatement);
class_ptr(MySqlAlterServerStatement);
class_ptr(MysqlAlterTableAlterCheck);
class_ptr(MySqlAlterTableAlterColumn);
class_ptr(MySqlAlterTableAlterFullTextIndex);
class_ptr(MySqlAlterTableChangeColumn);
class_ptr(MySqlAlterTableDiscardTablespace);
class_ptr(MySqlAlterTableForce);
class_ptr(MySqlAlterTableImportTablespace);
class_ptr(MySqlAlterTableLock);
class_ptr(MySqlAlterTableModifyColumn);
class_ptr(MySqlAlterTableOption);
class_ptr(MySqlAlterTableOrderBy);
class_ptr(MySqlAlterTablespaceStatement);
class_ptr(MySqlAlterTableValidation);
class_ptr(MySqlAlterUserStatement);
class_ptr(MySqlAlterUserStatement_AuthOption);
class_ptr(MySqlAlterUserStatement_AlterUser);
class_ptr(MySqlAlterUserStatement_PasswordOption);
class_ptr(MySqlAlterUserStatement_PasswordExpire);
class_ptr(MySqlAnalyzeStatement);
class_ptr(MySqlASTVisitor);
class_ptr(MySqlASTVisitorAdapter);
class_ptr(MySqlBinlogStatement);
class_ptr(MySqlCaseStatement);
class_ptr(MySqlCaseStatement_MySqlWhenStatement);
class_ptr(MySqlCharExpr);
class_ptr(MySqlChecksumTableStatement);
class_ptr(MySqlCheckTableStatement);
class_ptr(MySqlClearPlanCacheStatement);
class_ptr(MySqlCreateAddLogFileGroupStatement);
class_ptr(MySqlCreateEventStatement);
class_ptr(MySqlCreateExternalCatalogStatement);
class_ptr(MysqlCreateFullTextAnalyzerStatement);
class_ptr(MysqlCreateFullTextCharFilterStatement);
class_ptr(MysqlCreateFullTextDictionaryStatement);
class_ptr(MysqlCreateFullTextTokenFilterStatement);
class_ptr(MysqlCreateFullTextTokenizerStatement);
class_ptr(MySqlCreateServerStatement);
class_ptr(MySqlCreateTableSpaceStatement);
class_ptr(MySqlCreateTableStatement);
class_ptr(MySqlCreateTableStatement_TableSpaceOption);
class_ptr(MySqlCreateUserStatement);
class_ptr(MySqlCreateUserStatement_UserSpecification);
class_ptr(MySqlCursorDeclareStatement);
class_ptr(MysqlDeallocatePrepareStatement);
class_ptr(MySqlDeclareConditionStatement);
class_ptr(MySqlDeclareHandlerStatement);
class_ptr(MySqlDeclareStatement);
class_ptr(MySqlDeleteStatement);
class_ptr(MySqlDisabledPlanCacheStatement);
class_ptr(MysqlDropFullTextStatement);
class_ptr(MySqlEvalVisitorImpl);
class_ptr(MySqlEventSchedule);
class_ptr(MySqlExecuteForAdsStatement);
class_ptr(MySqlExecuteStatement);
class_ptr(MySqlExplainPlanCacheStatement);
class_ptr(MySqlExplainStatement);
class_ptr(MySqlExplainType);
class_ptr(MySqlExprParser);
class_ptr(MySqlExtPartition);
class_ptr(MySqlExtPartition_Item);
class_ptr(MySqlFlashbackStatement);
class_ptr(MySqlFlushStatement);
class_ptr(MySqlForceIndexHint);
class_ptr(MysqlForeignKey);
class_ptr(MySqlFormatName);
class_ptr(MySqlHandlerType);
class_ptr(MySqlHelpStatement);
class_ptr(MySqlHintStatement);
class_ptr(MySqlIgnoreIndexHint);
class_ptr(MySqlIndexHint);
class_ptr(MySqlIndexHint_Option);
class_ptr(MySqlIndexHintImpl);
class_ptr(MySqlInsertStatement);
class_ptr(MySqlIterateStatement);
class_ptr(MySqlJSONTableExpr);
class_ptr(MySqlJSONTableExpr_Column);
class_ptr(MySqlKey);
class_ptr(MySqlKillStatement);
class_ptr(MySqlKillStatement_Type);
class_ptr(MySqlLeaveStatement);
class_ptr(MySqlLexer);
class_ptr(MySqlLoadDataInFileStatement);
class_ptr(MySqlLoadXmlStatement);
class_ptr(MySqlLockTableStatement);
class_ptr(MySqlLockTableStatement_Item);
class_ptr(MySqlLockTableStatement_LockType);
class_ptr(MySqlManageInstanceGroupStatement);
class_ptr(MySqlMigrateStatement);
class_ptr(MySqlOptimizeStatement);
class_ptr(MySqlOrderingExpr);
class_ptr(MySqlOutFileExpr);
class_ptr(MySqlOutputVisitor);
class_ptr(MySqlPartitionByKey);
class_ptr(MySqlPrepareStatement);
class_ptr(MySqlPrimaryKey);
class_ptr(MySqlRaftLeaderTransferStatement);
class_ptr(MySqlRaftMemberChangeStatement);
class_ptr(MySqlRenameSequenceStatement);
class_ptr(MySqlRenameTableStatement);
class_ptr(MySqlRenameTableStatement_Item);
class_ptr(MySqlRepeatStatement);
class_ptr(MySqlResetStatement);
class_ptr(MySqlSchemaStatVisitor);
class_ptr(MySqlSelectIntoStatement);
class_ptr(MySqlSelectParser);
class_ptr(MySqlSelectQueryBlock);
class_ptr(MySqlSetTransactionStatement);
class_ptr(MySqlShowAuthorsStatement);
class_ptr(MySqlShowBinaryLogsStatement);
class_ptr(MySqlShowBinLogEventsStatement);
class_ptr(MySqlShowBroadcastsStatement);
class_ptr(MySqlShowCharacterSetStatement);
class_ptr(MySqlShowClusterNameStatement);
class_ptr(MySqlShowCollationStatement);
class_ptr(MySqlShowColumnOutpuVisitor);
class_ptr(MySqlShowConfigStatement);
class_ptr(MySqlShowContributorsStatement);
class_ptr(MySqlShowCreateDatabaseStatement);
class_ptr(MySqlShowCreateEventStatement);
class_ptr(MysqlShowCreateFullTextStatement);
class_ptr(MySqlShowCreateFunctionStatement);
class_ptr(MySqlShowCreateProcedureStatement);
class_ptr(MySqlShowCreateTriggerStatement);
class_ptr(MySqlShowDatabaseStatusStatement);
class_ptr(MySqlShowDatasourcesStatement);
class_ptr(MysqlShowDbLockStatement);
class_ptr(MySqlShowDdlStatusStatement);
class_ptr(MySqlShowDsStatement);
class_ptr(MySqlShowEnginesStatement);
class_ptr(MySqlShowEngineStatement);
class_ptr(MySqlShowEngineStatement_Option);
class_ptr(MySqlShowErrorsStatement);
class_ptr(MySqlShowEventsStatement);
class_ptr(MysqlShowFullTextStatement);
class_ptr(MySqlShowFunctionCodeStatement);
class_ptr(MySqlShowFunctionStatusStatement);
class_ptr(MySqlShowGrantsStatement);
class_ptr(MySqlShowHelpStatement);
class_ptr(MySqlShowHMSMetaStatement);
class_ptr(MysqlShowHtcStatement);
class_ptr(MySqlShowJobStatusStatement);
class_ptr(MySqlShowMasterLogsStatement);
class_ptr(MySqlShowMasterStatusStatement);
class_ptr(MySqlShowMigrateTaskStatusStatement);
class_ptr(MySqlShowNodeStatement);
class_ptr(MySqlShowOpenTablesStatement);
class_ptr(MySqlShowPartitionsStatement);
class_ptr(MySqlShowPhysicalProcesslistStatement);
class_ptr(MySqlShowPlanCacheStatement);
class_ptr(MySqlShowPlanCacheStatusStatement);
class_ptr(MySqlShowPluginsStatement);
class_ptr(MySqlShowPrivilegesStatement);
class_ptr(MySqlShowProcedureCodeStatement);
class_ptr(MySqlShowProcedureStatusStatement);
class_ptr(MySqlShowProcessListStatement);
class_ptr(MySqlShowProfilesStatement);
class_ptr(MySqlShowProfileStatement);
class_ptr(MySqlShowProfileStatement_Type);
class_ptr(MySqlShowRelayLogEventsStatement);
class_ptr(MySqlShowRuleStatement);
class_ptr(MySqlShowRuleStatusStatement);
class_ptr(MySqlShowSequencesStatement);
class_ptr(MySqlShowSlaveHostsStatement);
class_ptr(MySqlShowSlaveStatusStatement);
class_ptr(MySqlShowSlowStatement);
class_ptr(MySqlShowStatusStatement);
class_ptr(MysqlShowStcStatement);
class_ptr(MySqlShowTableStatusStatement);
class_ptr(MySqlShowTopologyStatement);
class_ptr(MySqlShowTraceStatement);
class_ptr(MySqlShowTriggersStatement);
class_ptr(MySqlShowWarningsStatement);
class_ptr(MySqlStatementParser);
class_ptr(MySqlStatementType);
class_ptr(MySqlSubPartitionByList);
class_ptr(MySqlSubPartitionByKey);
class_ptr(MySqlSubPartitionByValue);
class_ptr(MySqlTableIndex);
class_ptr(MySqlUnique);
class_ptr(MySqlUnlockTablesStatement);
class_ptr(MySqlUpdatePlanCacheStatement);
class_ptr(MySqlUpdateStatement);
class_ptr(MySqlUpdateTableSource);
class_ptr(MySqlUseIndexHint);
class_ptr(MySqlUserName);
class_ptr(MySqlXAStatement);
class_ptr(MySqlXAStatement_XAType);
class_ptr(Object);
class_ptr(OdpsNewExpr);
class_ptr(OdpsObject);
class_ptr(OdpsUDTFSQLSelectItem);
class_ptr(OracleAlterSessionStatement);
class_ptr(OracleAlterSummaryStatement);
class_ptr(OracleAlterSynonymStatement);
class_ptr(OracleAlterTableDropPartition);
class_ptr(OracleAlterTableModify);
class_ptr(OracleAlterTableMoveTablespace);
class_ptr(OracleAlterTableRowMovement);
class_ptr(OracleAlterTableShrinkSpace);
class_ptr(OracleAlterTablespaceAddDataFile);
class_ptr(OracleAlterTablespaceItem);
class_ptr(OracleAlterTablespaceStatement);
class_ptr(OracleAlterTableSplitPartition);
class_ptr(OracleAlterTableSplitPartition_NestedTablePartitionSpec);
class_ptr(OracleAlterTableSplitPartition_TableSpaceItem);
class_ptr(OracleAlterTableSplitPartition_UpdateIndexesClause);
class_ptr(OracleAlterTableTruncatePartition);
class_ptr(OracleAlterTriggerStatement);
class_ptr(OracleAlterViewStatement);
class_ptr(OracleAnalytic);
class_ptr(OracleAnalyticWindowing);
class_ptr(OracleAnalyticWindowing_Type);
class_ptr(OracleArgumentExpr);
class_ptr(OracleASTVisitor);
class_ptr(OracleBinaryDoubleExpr);
class_ptr(OracleBinaryFloatExpr);
class_ptr(OracleCheck);
class_ptr(OracleConstraint);
class_ptr(OracleConstraint_Initially);
class_ptr(OracleContinueStatement);
class_ptr(OracleCreateDatabaseDbLinkStatement);
class_ptr(OracleCreateIndexStatement);
class_ptr(OracleCreateSynonymStatement);
class_ptr(OracleCreateTableParser);
class_ptr(OracleCreateTableStatement);
class_ptr(OracleCreateTableStatement_DeferredSegmentCreation);
class_ptr(OracleCreateTableStatement_OIDIndex);
class_ptr(OracleCreateTableStatement_Organization);
class_ptr(OracleCreateTypeStatement);
class_ptr(OracleCursorExpr);
class_ptr(OracleDateTimeUnit);
class_ptr(OracleDataTypeIntervalDay);
class_ptr(OracleDataTypeIntervalYear);
class_ptr(OracleDatetimeExpr);
class_ptr(OracleDeleteStatement);
class_ptr(OracleDropDbLinkStatement);
class_ptr(OracleExitStatement);
class_ptr(OracleExceptionStatement);
class_ptr(OracleExceptionStatement_Item);
class_ptr(OracleExecuteImmediateStatement);
class_ptr(OracleExplainStatement);
class_ptr(OracleExprParser);
class_ptr(OracleFileSpecification);
class_ptr(OracleForeignKey);
class_ptr(OracleForStatement);
class_ptr(OracleFunctionDataType);
class_ptr(OracleGotoStatement);
class_ptr(OracleInsertStatement);
class_ptr(OracleIntervalExpr);
class_ptr(OracleIntervalType);
class_ptr(OracleIsOfTypeExpr);
class_ptr(OracleIsSetExpr);
class_ptr(OracleLabelStatement);
class_ptr(OracleLexer);
class_ptr(OracleLobParameters);
class_ptr(OracleLobStorageClause);
class_ptr(OracleLockTableStatement);
class_ptr(OracleLockTableStatement_LockMode);
class_ptr(OracleMultiInsertStatement);
class_ptr(OracleMultiInsertStatement_ConditionalInsertClause);
class_ptr(OracleMultiInsertStatement_ConditionalInsertClauseItem);
class_ptr(OracleMultiInsertStatement_Entry);
class_ptr(OracleMultiInsertStatement_InsertIntoClause);
class_ptr(OracleMultiInsertStatement_Option);
class_ptr(OracleOuterExpr);
class_ptr(OracleOutputVisitor);
class_ptr(OraclePipeRowStatement);
class_ptr(OraclePrimaryKey);
class_ptr(OracleProcedureDataType);
class_ptr(OracleRaiseStatement);
class_ptr(OracleRangeExpr);
class_ptr(OracleReturningClause);
class_ptr(OracleRunStatement);
class_ptr(OracleSegmentAttributes);
class_ptr(OracleSegmentAttributesImpl);
class_ptr(OracleSelectJoin);
class_ptr(OracleSelectParser);
class_ptr(OracleSelectQueryBlock);
class_ptr(OracleSelectRestriction);
class_ptr(OracleSelectRestriction_CheckOption);
class_ptr(OracleSelectRestriction_ReadOnly);
class_ptr(OracleSelectSubqueryTableSource);
class_ptr(OracleSelectTableReference);
class_ptr(OracleSelectTableSource);
class_ptr(OracleSetTransactionStatement);
class_ptr(OracleSQLObjectImpl);
class_ptr(OracleStatement);
class_ptr(OracleStatementImpl);
class_ptr(OracleStorageClause);
class_ptr(OracleStorageClause_FlashCacheType);
class_ptr(OracleSupplementalIdKey);
class_ptr(OracleSupplementalLogGrp);
class_ptr(OracleSysdateExpr);
class_ptr(OracleTreatExpr);
class_ptr(OracleUnique);
class_ptr(OracleUpdateStatement);
class_ptr(OracleUsingIndexClause);
class_ptr(OracleWithSubqueryEntry);
class_ptr(OracleXmlColumnProperties);
class_ptr(OracleXmlColumnProperties_OracleXMLTypeStorage);
class_ptr(ParameterizedVisitor);
class_ptr(PartitionExtensionClause);
class_ptr(PrintableVisitor);
class_ptr(repository_Function);
class_ptr(repository_FunctionHandler);
class_ptr(repository_FunctionType);
class_ptr(SampleClause);
class_ptr(Schema);
class_ptr(SchemaObject);
class_ptr(SchemaObjectType);
class_ptr(SchemaRepository);
class_ptr(SchemaRepository_DefaultConsoleSchemaVisitor);
class_ptr(SchemaRepository_MySqlConsoleSchemaVisitor);
class_ptr(SchemaRepository_OracleConsoleSchemaVisitor);
class_ptr(SchemaRepository_SchemaLoader);
class_ptr(SchemaRepository_SqlServerConsoleSchemaVisitor);
class_ptr(SchemaResolveVisitor);
class_ptr(SchemaResolveVisitor_Context);
class_ptr(SchemaResolveVisitor_Option);
class_ptr(SchemaResolveVisitorFactory);
class_ptr(SchemaResolveVisitorFactory_MySqlResolveVisitor);
class_ptr(SchemaResolveVisitorFactory_OracleResolveVisitor);
class_ptr(SchemaResolveVisitorFactory_SQLResolveVisitor);
class_ptr(SchemaResolveVisitorFactory_SQLServerResolveVisitor);
class_ptr(SchemaStatVisitor);
class_ptr(SchemaStatVisitor_MySqlOrderByStatVisitor);
class_ptr(SchemaStatVisitor_OracleOrderByStatVisitor);
class_ptr(SchemaStatVisitor_OrderByStatVisitor);
class_ptr(SchemaStatVisitor_PGOrderByStatVisitor);
class_ptr(SearchClause);
class_ptr(SearchClause_Type);
class_ptr(SQLAdhocTableSource);
class_ptr(SQLAggregateExpr);
class_ptr(SQLAggregateOption);
class_ptr(SQLAllColumnExpr);
class_ptr(SQLAllExpr);
class_ptr(SQLAlterCharacter);
class_ptr(SQLAlterDatabaseItem);
class_ptr(SQLAlterDatabaseStatement);
class_ptr(SQLAlterFunctionStatement);
class_ptr(SQLAlterIndexStatement);
class_ptr(SQLAlterIndexStatement_Rebuild);
class_ptr(SQLAlterMaterializedViewStatement);
class_ptr(SQLAlterOutlineStatement);
class_ptr(SQLAlterProcedureStatement);
class_ptr(SQLAlterResourceGroupStatement);
class_ptr(SQLAlterSequenceStatement);
class_ptr(SQLAlterSystemGetConfigStatement);
class_ptr(SQLAlterSystemSetConfigStatement);
class_ptr(SQLAlterTableAddClusteringKey);
class_ptr(SQLAlterTableAddColumn);
class_ptr(SQLAlterTableAddConstraint);
class_ptr(SQLAlterTableAddExtPartition);
class_ptr(SQLAlterTableAddIndex);
class_ptr(SQLAlterTableAddPartition);
class_ptr(SQLAlterTableAddSupplemental);
class_ptr(SQLAlterTableAlterColumn);
class_ptr(SQLAlterTableAlterIndex);
class_ptr(SQLAlterTableAnalyzePartition);
class_ptr(SQLAlterTableArchive);
class_ptr(SQLAlterTableArchivePartition);
class_ptr(SQLAlterTableBlockSize);
class_ptr(SQLAlterTableChangeOwner);
class_ptr(SQLAlterTableCheckPartition);
class_ptr(SQLAlterTableCoalescePartition);
class_ptr(SQLAlterTableCompression);
class_ptr(SQLAlterTableConvertCharSet);
class_ptr(SQLAlterTableDeleteByCondition);
class_ptr(SQLAlterTableDisableConstraint);
class_ptr(SQLAlterTableDisableKeys);
class_ptr(SQLAlterTableDisableLifecycle);
class_ptr(SQLAlterTableDiscardPartition);
class_ptr(SQLAlterTableDropClusteringKey);
class_ptr(SQLAlterTableDropColumnItem);
class_ptr(SQLAlterTableDropConstraint);
class_ptr(SQLAlterTableDropExtPartition);
class_ptr(SQLAlterTableDropForeignKey);
class_ptr(SQLAlterTableDropIndex);
class_ptr(SQLAlterTableDropKey);
class_ptr(SQLAlterTableDropPartition);
class_ptr(SQLAlterTableDropPrimaryKey);
class_ptr(SQLAlterTableDropSubpartition);
class_ptr(SQLAlterTableEnableConstraint);
class_ptr(SQLAlterTableEnableKeys);
class_ptr(SQLAlterTableEnableLifecycle);
class_ptr(SQLAlterTableExchangePartition);
class_ptr(SQLAlterTableGroupStatement);
class_ptr(SQLAlterTableItem);
class_ptr(SQLAlterTableImportPartition);
class_ptr(SQLAlterTableMergePartition);
class_ptr(SQLAlterTableModifyClusteredBy);
class_ptr(SQLAlterTableOptimizePartition);
class_ptr(SQLAlterTablePartition);
class_ptr(SQLAlterTablePartitionCount);
class_ptr(SQLAlterTablePartitionLifecycle);
class_ptr(SQLAlterTablePartitionSetProperties);
class_ptr(SQLAlterTableRebuildPartition);
class_ptr(SQLAlterTableRecoverPartitions);
class_ptr(SQLAlterTableRename);
class_ptr(SQLAlterTableRenameColumn);
class_ptr(SQLAlterTableRenameConstraint);
class_ptr(SQLAlterTableRenameIndex);
class_ptr(SQLAlterTableRenamePartition);
class_ptr(SQLAlterTableReOrganizePartition);
class_ptr(SQLAlterTableRepairPartition);
class_ptr(SQLAlterTableReplaceColumn);
class_ptr(SQLAlterTableSetComment);
class_ptr(SQLAlterTableSetLifecycle);
class_ptr(SQLAlterTableSetLocation);
class_ptr(SQLAlterTableSetOption);
class_ptr(SQLAlterTableStatement);
class_ptr(SQLAlterTableSubpartitionAvailablePartitionNum);
class_ptr(SQLAlterTableSubpartitionLifecycle);
class_ptr(SQLAlterTableTouch);
class_ptr(SQLAlterTableTruncatePartition);
class_ptr(SQLAlterTableUnarchivePartition);
class_ptr(SQLAlterTypeStatement);
class_ptr(SQLAlterViewRenameStatement);
class_ptr(SQLAlterViewStatement);
class_ptr(SQLAnalyzeTableStatement);
class_ptr(SQLAnnIndex);
class_ptr(SQLAnyExpr);
class_ptr(SQLArchiveTableStatement);
class_ptr(SQLArgument);
class_ptr(SQLArrayDataType);
class_ptr(SQLArrayExpr);
class_ptr(SQLASTOutputVisitor);
class_ptr(SQLASTVisitor);
class_ptr(SQLAssignItem);
class_ptr(SQLBackupStatement);
class_ptr(SQLBeginStatement);
class_ptr(SQLBetweenExpr);
class_ptr(SQLBigIntExpr);
class_ptr(SQLBinaryExpr);
class_ptr(SQLBinaryOperator);
class_ptr(SQLBinaryOpExpr);
class_ptr(SQLBinaryOpExprGroup);
class_ptr(SQLBlockStatement);
class_ptr(SQLBooleanExpr);
class_ptr(SQLBuildTableStatement);
class_ptr(SQLCallStatement);
class_ptr(SQLCancelJobStatement);
class_ptr(SQLCaseStatement_Item);
class_ptr(SQLCaseStatement);
class_ptr(SQLCaseExpr);
class_ptr(SQLCaseExpr_Item);
class_ptr(SQLCastExpr);
class_ptr(SQLCharacterDataType);
class_ptr(SQLCheck);
class_ptr(SQLCharExpr);
class_ptr(SQLCloneTableStatement);
class_ptr(SQLCloseStatement);
class_ptr(SQLColumnCheck);
class_ptr(SQLColumnConstraint);
class_ptr(SQLColumnDefinition);
class_ptr(SQLColumnPrimaryKey);
class_ptr(SQLColumnReference);
class_ptr(SQLCommentHint);
class_ptr(SQLCommentStatement);
class_ptr(SQLCommentStatement_Type);
class_ptr(SQLCommitStatement);
class_ptr(SQLConstraint);
class_ptr(SQLConstraintImpl);
class_ptr(SQLCopyFromStatement);
class_ptr(SQLCostStatement);
class_ptr(SQLColumnUniqueKey);
class_ptr(SQLCreateDatabaseStatement);
class_ptr(SQLCreateFunctionStatement);
class_ptr(SQLCreateIndexStatement);
class_ptr(SQLCreateMaterializedViewStatement);
class_ptr(SQLCreateOutlineStatement);
class_ptr(OracleCreatePackageStatement);
class_ptr(SQLCreateProcedureStatement);
class_ptr(SQLCreateResourceGroupStatement);
class_ptr(SQLCreateRoleStatement);
class_ptr(SQLCreateSequenceStatement);
class_ptr(SQLCreateTableGroupStatement);
class_ptr(SQLCreateTableParser);
class_ptr(SQLCreateTableStatement);
class_ptr(SQLCreateTableStatement_Type);
class_ptr(SQLCreateTriggerStatement);
class_ptr(SQLCreateTriggerStatement_TriggerEvent);
class_ptr(SQLCreateTriggerStatement_TriggerType);
class_ptr(SQLCreateUserStatement);
class_ptr(SQLCreateViewStatement);
class_ptr(SQLCreateViewStatement_Column);
class_ptr(SQLCreateViewStatement_Level);
class_ptr(SQLContainsExpr);
class_ptr(SQLCurrentOfCursorExpr);
class_ptr(SQLCurrentTimeExpr);
class_ptr(SQLCurrentTimeExpr_Type);
class_ptr(SQLCurrentUserExpr);
class_ptr(SQLDataTypeRefExpr);
class_ptr(SQLDateExpr);
class_ptr(SQLDateTimeExpr);
class_ptr(SQLDataType);
class_ptr(SQLDataTypeImpl);
class_ptr(SQLDbLinkExpr);
class_ptr(SQLDDLStatement);
class_ptr(SQLDeclareItem);
class_ptr(SQLDeclareStatement);
class_ptr(SQLDecimalExpr);
class_ptr(SQLDefault);
class_ptr(SQLDefaultExpr);
class_ptr(SQLDeleteStatement);
class_ptr(SQLDescribeStatement);
class_ptr(SQLDoubleExpr);
class_ptr(SQLDropCatalogStatement);
class_ptr(SQLDropDatabaseStatement);
class_ptr(SQLDropEventStatement);
class_ptr(SQLDropFunctionStatement);
class_ptr(SQLDropIndexStatement);
class_ptr(SQLDropLogFileGroupStatement);
class_ptr(SQLDropMaterializedViewStatement);
class_ptr(SQLDropOfflineModelStatement);
class_ptr(SQLDropOutlineStatement);
class_ptr(SQLDropProcedureStatement);
class_ptr(SQLDropResourceStatement);
class_ptr(SQLDropResourceGroupStatement);
class_ptr(SQLDropRoleStatement);
class_ptr(SQLDropSequenceStatement);
class_ptr(SQLDropServerStatement);
class_ptr(SQLDropStatement);
class_ptr(SQLDropSynonymStatement);
class_ptr(SQLDropTableGroupStatement);
class_ptr(SQLDropTableSpaceStatement);
class_ptr(SQLDropTableStatement);
class_ptr(SQLDropTriggerStatement);
class_ptr(SQLDropTypeStatement);
class_ptr(SQLDropUserStatement);
class_ptr(SQLDropViewStatement);
class_ptr(SQLDumpStatement);
class_ptr(SQLErrorLoggingClause);
class_ptr(SQLEvalVisitor);
class_ptr(SQLEvalVisitorImpl);
class_ptr(SQLExistsExpr);
class_ptr(SQLExplainAnalyzeStatement);
class_ptr(SQLExplainStatement);
class_ptr(SQLExportDatabaseStatement);
class_ptr(SQLExportTableStatement);
class_ptr(SQLExpr);
class_ptr(SQLExprComparor);
class_ptr(SQLExprHint);
class_ptr(SQLExprParser);
class_ptr(SQLExprStatement);
class_ptr(SQLExprTableSource);
class_ptr(SQLExternalRecordFormat);
class_ptr(SQLExtractExpr);
class_ptr(SQLFetchStatement);
class_ptr(SQLFlashbackExpr);
class_ptr(SQLFlashbackExpr_Type);
class_ptr(SQLFloatExpr);
class_ptr(SQLForeignKeyConstraint);
class_ptr(SQLForeignKeyImpl);
class_ptr(SQLForeignKeyImpl_Match);
class_ptr(SQLForeignKeyImpl_Option);
class_ptr(SQLForStatement);
class_ptr(SQLGrantStatement);
class_ptr(SQLGroupingSetExpr);
class_ptr(SQLHexExpr);
class_ptr(SQLHint);
class_ptr(SQLIdentifierExpr);
class_ptr(SQLIfStatement);
class_ptr(SQLIfStatement_Else);
class_ptr(SQLIfStatement_ElseIf);
class_ptr(SQLImportDatabaseStatement);
class_ptr(SQLImportTableStatement);
class_ptr(SQLIndex);
class_ptr(SQLInListExpr);
class_ptr(SQLIndexDefinition);
class_ptr(SQLIndexOptions);
class_ptr(SQLInsertInto);
class_ptr(SQLInsertStatement);
class_ptr(SQLInsertStatement_ValuesClause);
class_ptr(SQLInsertValueHandler);
class_ptr(SQLInSubQueryExpr);
class_ptr(SQLIntegerExpr);
class_ptr(SQLIntervalExpr);
class_ptr(SQLIntervalUnit);
class_ptr(SQLJoinTableSource);
class_ptr(SQLJoinTableSource_JoinType);
class_ptr(SQLJoinTableSource_UDJ);
class_ptr(SQLJSONExpr);
class_ptr(SQLKeep);
class_ptr(SQLKeep_DenseRank);
class_ptr(SQLLateralViewTableSource);
class_ptr(SQLLimit);
class_ptr(SQLListExpr);
class_ptr(SQLListResourceGroupStatement);
class_ptr(SQLLiteralExpr);
class_ptr(SQLLoopStatement);
class_ptr(SQLMapDataType);
class_ptr(SQLMatchAgainstExpr);
class_ptr(SQLMergeStatement);
class_ptr(SQLMergeStatement_MergeUpdateClause);
class_ptr(SQLMergeStatement_MergeInsertClause);
class_ptr(SQLMethodInvokeExpr);
class_ptr(SQLName);
class_ptr(SQLNCharExpr);
class_ptr(SQLNotExpr);
class_ptr(SQLNotNullConstraint);
class_ptr(SQLNullConstraint);
class_ptr(SQLNullExpr);
class_ptr(SQLNumberExpr);
class_ptr(SQLNumericLiteralExpr);
class_ptr(SQLObject);
class_ptr(SQLObjectType);
class_ptr(SQLOpenStatement);
class_ptr(SQLOptimizeStatement);
class_ptr(SQLOrderBy);
class_ptr(SQLOrderingSpecification);
class_ptr(SQLOver);
class_ptr(SQLOver_WindowingBound);
class_ptr(SQLOver_WindowingType);
class_ptr(SQLParameter);
class_ptr(SQLParameter_ParameterType);
class_ptr(SQLParserFeature);
class_ptr(SQLPartition);
class_ptr(SQLPartitionBy);
class_ptr(SQLPartitionByRange);
class_ptr(SQLPartitionByHash);
class_ptr(SQLPartitionByValue);
class_ptr(SQLPartitionByList);
class_ptr(SQLPartitionRef);
class_ptr(SQLPartitionRef_Item);
class_ptr(SQLPartitionSpec);
class_ptr(SQLPartitionSpec_Item);
class_ptr(SQLPartitionValue);
class_ptr(SQLPrimaryKey);
class_ptr(SQLPrimaryKeyImpl);
class_ptr(SQLPropertyExpr);
class_ptr(SQLPivot);
class_ptr(SQLPrivilegeItem);
class_ptr(SQLPurgeLogsStatement);
class_ptr(SQLPurgeRecyclebinStatement);
class_ptr(SQLPurgeTableStatement);
class_ptr(SQLPurgeTemporaryOutputStatement);
class_ptr(SQLQueryExpr);
class_ptr(SQLRealExpr);
class_ptr(SQLRecordDataType);
class_ptr(SQLRefreshMaterializedViewStatement);
class_ptr(SQLReleaseSavePointStatement);
class_ptr(SQLRenameUserStatement);
class_ptr(SQLReplaceStatement);
class_ptr(SQLRestoreStatement);
class_ptr(SQLReturnStatement);
class_ptr(SQLRevokeStatement);
class_ptr(SQLRollbackStatement);
class_ptr(SQLRowDataType);
class_ptr(SQLSavePointStatement);
class_ptr(SQLScriptCommitStatement);
class_ptr(SQLSelect);
class_ptr(SQLSelectGroupByClause);
class_ptr(SQLSelectItem);
class_ptr(SQLSelectListCache);
class_ptr(SQLSelectOrderByItem);
class_ptr(SQLSelectOrderByItem_NullsOrderType);
class_ptr(SQLSelectParser);
class_ptr(SQLSelectQuery);
class_ptr(SQLSelectQueryBlock);
class_ptr(SQLSelectStatement);
class_ptr(SQLSequenceExpr);
class_ptr(SQLSequenceExpr_Function);
class_ptr(SQLServerASTVisitor);
class_ptr(SQLServerExprParser);
class_ptr(SQLServerExecStatement);
class_ptr(SQLServerExecStatement_SQLServerParameter);
class_ptr(SQLServerInsertStatement);
class_ptr(SQLServerLexer);
class_ptr(SQLServerObjectReferenceExpr);
class_ptr(SQLServerOutput);
class_ptr(SQLServerRollbackStatement);
class_ptr(SQLServerSelectParser);
class_ptr(SQLServerSelectQueryBlock);
class_ptr(SQLServerSetTransactionIsolationLevelStatement);
class_ptr(SQLServerTop);
class_ptr(SQLServerUpdateStatement);
class_ptr(SQLServerWaitForStatement);
class_ptr(SQLSetStatement);
class_ptr(SQLSetStatement_Option);
class_ptr(SQLShowACLStatement);
class_ptr(SQLShowCatalogsStatement);
class_ptr(SQLShowColumnsStatement);
class_ptr(SQLShowCreateMaterializedViewStatement);
class_ptr(SQLShowCreateTableStatement);
class_ptr(SQLShowCreateViewStatement);
class_ptr(SQLShowDatabasesStatement);
class_ptr(SQLShowErrorsStatement);
class_ptr(SQLShowFunctionsStatement);
class_ptr(SQLShowGrantsStatement);
class_ptr(SQLShowHistoryStatement);
class_ptr(SQLShowIndexesStatement);
class_ptr(SQLShowMaterializedViewStatement);
class_ptr(SQLShowOutlinesStatement);
class_ptr(SQLShowPackagesStatement);
class_ptr(SQLShowPartitionsStmt);
class_ptr(SQLShowProcessListStatement);
class_ptr(SQLShowQueryTaskStatement);
class_ptr(SQLShowRecylebinStatement);
class_ptr(SQLShowRolesStatement);
class_ptr(SQLShowRoleStatement);
class_ptr(SQLShowSessionStatement);
class_ptr(SQLShowStatisticListStmt);
class_ptr(SQLShowStatisticStmt);
class_ptr(SQLShowTableGroupsStatement);
class_ptr(SQLShowTablesStatement);
class_ptr(SQLShowUsersStatement);
class_ptr(SQLShowVariantsStatement);
class_ptr(SQLShowViewsStatement);
class_ptr(SQLSizeExpr);
class_ptr(SQLSomeExpr);
class_ptr(SQLSmallIntExpr);
class_ptr(SQLStartTransactionStatement);
class_ptr(SQLStartTransactionStatement_IsolationLevel);
class_ptr(SQLStatement);
class_ptr(SQLStatementImpl);
class_ptr(SQLStatementParser);
class_ptr(SQLStructDataType);
class_ptr(SQLStructDataType_Field);
class_ptr(SQLSubmitJobStatement);
class_ptr(SQLSubPartition);
class_ptr(SQLSubPartitionBy);
class_ptr(SQLSubPartitionByHash);
class_ptr(SQLSubPartitionByList);
class_ptr(SQLSubPartitionByRange);
class_ptr(SQLSubqueryTableSource);
class_ptr(SQLSyncMetaStatement);
class_ptr(SQLTableConstraint);
class_ptr(SQLTableElement);
class_ptr(SQLTableLike);
class_ptr(SQLTableSampling);
class_ptr(SQLTableSource);
class_ptr(SQLTextLiteralExpr);
class_ptr(SQLTimeExpr);
class_ptr(SQLTimestampExpr);
class_ptr(SQLTinyIntExpr);
class_ptr(SQLTruncateStatement);
class_ptr(SQLType);
class_ptr(SQLUnaryExpr);
class_ptr(SQLUnaryOperator);
class_ptr(SQLUnionDataType);
class_ptr(SQLUnionOperator);
class_ptr(SQLUnionQuery);
class_ptr(SQLUnionQueryTableSource);
class_ptr(SQLUnique);
class_ptr(SQLUniqueConstraint);
class_ptr(SQLUnnestTableSource);
class_ptr(SQLUnpivot);
class_ptr(SQLUnpivot_NullsIncludeType);
class_ptr(SQLUpdateSetItem);
class_ptr(SQLUpdateStatement);
class_ptr(SQLUseStatement);
class_ptr(SQLValuesExpr);
class_ptr(SQLValuesQuery);
class_ptr(SQLValuesTableSource);
class_ptr(SQLVariantRefExpr);
class_ptr(SQLWhileStatement);
class_ptr(SQLWhoamiStatement);
class_ptr(SQLWindow);
class_ptr(SQLWithSubqueryClause);
class_ptr(SQLWithSubqueryClause_Entry);
class_ptr(SQLZOrderBy);
class_ptr(SymbolTable);
class_ptr(TableStat);
class_ptr(TableStat_Column);
class_ptr(TableStat_Condition);
class_ptr(TableStat_Relationship);
class_ptr(TableStat_Mode);
class_ptr(TableStat_Name);
class_ptr(TDDLHint);
class_ptr(TDDLHint_Argument);
class_ptr(TDDLHint_Function);
class_ptr(Token);
class_ptr(UDJ);
class_ptr(Violation);
class_ptr(VisitorFeature);
class_ptr(WallConfig);
class_ptr(WallVisitor);
class_ptr(WallVisitorUtils_WallConditionContext);
class_ptr(WallVisitorUtils_WallTopStatementContext);
